#ifndef	__BFX_REFXMLNOTATION_H__
#define	__BFX_REFXMLNOTATION_H__

namespace BFX
{

//////////////////////////////////////////////////////////////////////////////

// Contains a notation declared in the DTD or schema.
class REFXMLNotation : public REFXMLNode
{
	friend class REFXMLLoader;
protected:
	REFXMLNotation(const UniString& strName, const UniString& strPublicId, const UniString& strSystemId, REFXMLDocument* pDoc);
public:
	virtual ~REFXMLNotation();

	// Gets the name of the node.
	virtual UniString GetName() const;

	// Gets the name of the current node without the namespace prefix.
	virtual UniString GetLocalName() const;

	// Gets the type of the current node.
	virtual XMLNodeType GetNodeType() const;

	// Without override these two functions, we can't guarantee that WriteTo()/WriteContent() functions will never be called
	virtual UniString GetOuterXml() const;

	virtual UniString GetInnerXml() const;
	virtual void SetInnerXml(const UniString& str);

	// Saves the node to the specified XmlWriter.
	virtual void WriteTo(REFXMLWriter* w) const;

	// Saves all the children of the node to the specified XmlWriter.
	virtual void WriteContentTo(REFXMLWriter* w) const;

	// Gets the value of the public identifier on the notation declaration.
	UniString GetPublicId() const;

	// Gets the value of the system identifier on the notation declaration.
	UniString GetSystemId() const;

protected:
	UniString	m_strPublicId;
	UniString	m_strSystemId;
	UniString	m_strName;
};

}	//	namespace BFX

#endif	//	__BFX_REFXMLNOTATION_H__
